#include "QFont.h"


EXPORT_C CQFont::CQFont(CFont* pFont, QINT32 nFontType)
{
	m_pFont = pFont;
	m_nFontType = nFontType;
}

EXPORT_C CQFont::~CQFont()
{
	if (m_pFont && m_nFontType == 1)
		CEikonEnv::Static()->ScreenDevice()->ReleaseFont(m_pFont);
	
	m_pFont = QNULL;
}

EXPORT_C QBOOL CQFont::ResetFont(CFont* pFont,QINT32 nFontType)
{
	if (m_pFont && m_nFontType == 1)
		CEikonEnv::Static()->ScreenDevice()->ReleaseFont(m_pFont);

	m_pFont = pFont;
	m_nFontType = nFontType;
	return QTRUE;
}

EXPORT_C QINT32 CQFont::CharWidthInPixels(QUINT16 wChar) const
{
	if(m_pFont == QNULL)
	{
		return 0;
	}

	return m_pFont->CharWidthInPixels(wChar);
}

EXPORT_C QINT32 CQFont::TextWidthInPixels(const CQWString&  aText) const
{
	if(m_pFont == QNULL)
	{
		return 0;
	}

	TPtrC16 tmpString((TUint16*)aText.GetDataPtr(), aText.GetLength());
	return m_pFont->TextWidthInPixels(tmpString);
}

EXPORT_C QINT32 CQFont::TextWidthInPixels(LPCWSTR aText,int alength) const
{
	if(QNULL == m_pFont || QNULL == aText)
	{
		return 0;
	}

	TPtrC16 tmpString((TUint16 *)aText, alength);
	return m_pFont->TextWidthInPixels(tmpString);
}

//EXPORT_C QINT32 CQFont::TextWidthInPixels(const TPtrC16&  aText) const
//{
//	if(QNULL == m_pFont)
//	{
//		return 0;
//	}
//	
//	return m_pFont->TextWidthInPixels(aText);
//}

EXPORT_C QINT32 CQFont::TextWidthInPixels(const CQSString & aString) const
{
	if( aString.GetLength() <= 0 ) 
	{
		return 0 ;
	}

	return TextWidthInPixels(CQWString(aString));
}

EXPORT_C QINT32 CQFont::HeightInPixels() const
{
	if( m_pFont == NULL ) 
	{
		return 0 ;
	}

	return m_pFont->HeightInPixels() ;
}
//
//EXPORT_C QINT32 CQFont::HeightInTwips() const
//{
//	if( m_pFont == NULL )
//	{
//		return 0;
//	}
//	return m_pFont->FontSpecInTwips().iHeight;
//}
//
EXPORT_C QINT32 CQFont::AscentInPixels() const
{
	if( m_pFont == NULL )
	{
		return 0;
	}
	return m_pFont->AscentInPixels();
}
